home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #2 / Monster Media No. 2 (Monster Media)(1994).ISO / pcboard / bcmx120.zip / FEEDBACK.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1994-07-04  |  10KB  |  680 lines

  1. ;------------------------------------------------------------------------------
  2. ;                                                   .ss.
  3. ;                                                   `²²'
  4. ;             .,sS$Ss,,s$  .,sS$$$Ss.  .,sS$Ss,,s$ .ss.  .sSs.
  5. ;           .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
  6. ;           $$$'   .$$$' $$$²Sçsµ²' .$$$'   .$$$'.$$$' .$$$'  `$$b.
  7. ;           $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$'    ;$$$
  8. ;           `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
  9. ;                                    .sS²°$$$²²°"'       d²°'
  10. ;                                  .$$²  .$$'
  11. ;                                  $$$.,d$$'
  12. ;                                  `²S$$S²'
  13. ;------------------------------------------------------------------------------
  14. ; P.P.L.X. 2.OO                          (C)1996 - Lone Runner / AEGiS CoRP'96 
  15. ;------------------------------------------------------------------------------
  16. ; PPE 2.OO (plain) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Boolean  BOOLEAN001
  20.     Boolean  BOOLEAN002
  21.     Boolean  BOOLEAN003
  22.     Boolean  BOOLEAN004
  23.     Boolean  BOOLEAN005
  24.     Integer  INTEGER001
  25.     Integer  INTEGER002
  26.     Integer  INTEGER003
  27.     Integer  INTEGER004
  28.     Integer  INTEGER005
  29.     Integer  INTEGER006
  30.     Integer  INTEGER007
  31.     Integer  INTEGER008
  32.     Integer  INTEGER009
  33.     Integer  INTEGER010
  34.     Integer  INTEGER011
  35.     Integer  INTEGER012
  36.     Integer  INTEGER013
  37.     Integer  INTEGER014
  38.     Integer  INTEGER015
  39.     Integer  INTEGER016
  40.     Integer  INTEGER017
  41.     Integer  INTEGER018
  42.     Integer  INTEGER019
  43.     Integer  INTEGER020
  44.     Integer  INTEGER021
  45.     Integer  INTEGER022
  46.     Integer  INTEGER023
  47.     Integer  INTEGER024
  48.     String   STRING001
  49.     String   STRING002
  50.     String   STRING003
  51.     String   STRING004
  52.     String   STRING005
  53.     String   STRING006
  54.     String   STRING007
  55.     String   STRING008
  56.     String   STRING009
  57.     String   STRING010
  58.     String   STRING011
  59.     String   STRING012
  60.     String   STRING013
  61.     String   STRING014
  62.     String   STRING015
  63.     String   STRING016
  64.     String   STRING017
  65.     String   STRING018
  66.     String   STRING019
  67.     String   STRING020
  68.     String   STRING021
  69.     String   STRING022
  70.     String   STRING023
  71.     String   STRING024
  72.     String   STRING025
  73.     String   STRING026
  74.     String   STRING027
  75.     String   STRING028
  76.     String   STRING029
  77.     String   STRING030
  78.     String   STRING031
  79.  
  80. ;------------------------------------------------------------------------------
  81.  
  82.     STRING023 = PPEPath() + "cfg\fbmenus.cfg"
  83.     BOOLEAN003 = 0
  84.     BOOLEAN004 = 0
  85.     BOOLEAN001 = 0
  86.     STRING001 = PPEPath() + "\graph\fbtext"
  87.     If (LangExt() <> "") Then
  88.         If (BOOLEAN001) Then
  89.             PrintLn "Langext = " + LangExt()
  90.             Wait
  91.         Endif
  92.         If (Exist(STRING001 + LangExt())) STRING001 = STRING001 + LangExt()
  93.     Endif
  94.     STRING018 = PPEPath() + "\work\mxlog." + String(PcbNode())
  95.     STRING019 = PPEPath() + "\work\fbtmp." + String(PcbNode())
  96.     STRING002 = PPEPath() + "feedback.cfg"
  97.     BOOLEAN005 = 0
  98.     Tokenize TokenStr()
  99.     If (TokCount() >= 2) Then
  100.         If (GetToken() == "LOGON") Then
  101.             BOOLEAN005 = 1
  102.             STRING024 = GetToken()
  103.         Endif
  104.         STRING011 = GetToken()
  105.         While (STRING011 <> "") Do
  106.             STRING024 = STRING024 + " " + STRING011
  107.             STRING011 = GetToken()
  108.         EndWhile
  109.     Endif
  110.     STRING011 = ""
  111.     Tokenize ReadLine(STRING002, 2)
  112.     INTEGER002 = GetToken()
  113.     If (Upper(GetToken()) == "YES") Then
  114.         BOOLEAN002 = 1
  115.     Else
  116.         BOOLEAN002 = 0
  117.     Endif
  118.     INTEGER015 = GetToken()
  119.     STRING013 = PPEPath() + "mx.cfg"
  120.     If (BOOLEAN002) Then
  121.         If (LoggedOn()) Goto LABEL001
  122.         If (Exist(STRING013)) Then
  123.             If (Upper(ReadLine(STRING013, 3)) == "YES") Then
  124.                 FAppend 3, STRING018, 1, 0
  125.                 Goto LABEL001
  126.             Endif
  127.             BOOLEAN002 = 0
  128.         Endif
  129.     Endif
  130.     :LABEL001
  131.     If (LoggedOn()) Then
  132.         GetUser
  133.         STRING008 = U_Name()
  134.     Endif
  135.     INTEGER011 = 1
  136.     STRING015 = Chr(13)
  137.     STRING016 = Chr(27)
  138.     STRING017 = Chr(7)
  139.     INTEGER001 = ReadLine(STRING002, 1)
  140.     If (BOOLEAN002) Then
  141.         STRING003 = "Feedback started at " + String(Time())
  142.         Gosub LABEL018
  143.     Endif
  144.     If (AnsiOn()) Goto LABEL002
  145.     If (BOOLEAN002) Then
  146.         STRING003 = "No ansi, exiting feedback at " + String(Time())
  147.         Gosub LABEL018
  148.     Endif
  149.     PrintLn 
  150.     PrintLn "No ansi capability, exiting feedback"
  151.     End
  152.     :LABEL002
  153.     StartDisp 1
  154.     INTEGER011 = 1
  155.     Tokenize ReadLine(STRING023, 1)
  156.     STRING025 = GetToken()
  157.     INTEGER016 = GetToken()
  158.     :LABEL003
  159.     STRING026 = Random(Time())
  160.     STRING026 = Random(STRING025 - 1) + 1
  161.     Tokenize ReadLine(STRING023, 1 + STRING026)
  162.     INTEGER021 = STRING026
  163.     INTEGER008 = GetToken()
  164.     INTEGER004 = GetToken()
  165.     INTEGER005 = GetToken()
  166.     STRING028 = GetToken()
  167.     STRING021 = GetToken()
  168.     STRING029 = GetToken()
  169.     STRING031 = PPEPath() + "mnutxt\fbmnu"
  170.     If (Exist(STRING031 + String(STRING026) + LangExt())) Then
  171.         STRING031 = PPEPath() + "mnutxt\fbmnu" + String(STRING026) + LangExt()
  172.     ElseIf (Exist(STRING031 + String(STRING026))) Then
  173.         STRING031 = PPEPath() + "mnutxt\fbmnu" + String(STRING026)
  174.     ElseIf (Exist(STRING031 + LangExt())) Then
  175.         STRING031 = PPEPath() + "mnutxt\fbmnu" + LangExt()
  176.     Endif
  177.     If (INTEGER001 == 1) Goto LABEL010
  178.     If (BOOLEAN005) Goto LABEL010
  179.     INTEGER012 = INTEGER001
  180.     :LABEL004
  181.     INTEGER006 = INTEGER004
  182.     INTEGER007 = INTEGER005
  183.     If (BOOLEAN004) Goto LABEL005
  184.     DefColor
  185.     Cls
  186.     DispFile PPEPath() + "graph\feed" + String(INTEGER021), 1 + 4
  187.     :LABEL005
  188.     Color DefColor()
  189.     STRING030 = ReadLine(STRING031, 1)
  190.     INTEGER024 = Len(StripAtx(STRING030)) - 4
  191.     If (INTEGER016 >= INTEGER001) Then
  192.         INTEGER011 = 1
  193.         For INTEGER013 = 1 To INTEGER001
  194.             AnsiPos INTEGER006 - INTEGER024, INTEGER007 + INTEGER013 - 1
  195.             STRING006 = Chr(Asc("a") + INTEGER013)
  196.             INTEGER023 = (INTEGER013 - 1) * 2 + 1
  197.             STRING012 = STRING028 + ReadLine(STRING031, INTEGER023 + 1)
  198.             STRING012 = STRING012 + STRING029 + ReadLine(STRING031, INTEGER023 + 2)
  199.             Print ReplaceStr(STRING030, "%SEP%", STRING006), STRING012
  200.         Next
  201.         INTEGER019 = INTEGER011
  202.         INTEGER018 = INTEGER011 + INTEGER001 - 1
  203.     Else
  204.         If (INTEGER011 + INTEGER016 <= INTEGER012) INTEGER017 = INTEGER011 + INTEGER016 - 1
  205.         If (INTEGER011 + INTEGER016 > INTEGER012) INTEGER017 = INTEGER012
  206.         INTEGER013 = INTEGER011 + INTEGER016 - INTEGER012
  207.         INTEGER019 = INTEGER011
  208.         INTEGER018 = INTEGER017
  209.         Color DefColor()
  210.         INTEGER014 = INTEGER011 % INTEGER016
  211.         For INTEGER013 = INTEGER011 To INTEGER017
  212.             If (INTEGER014 == 0) INTEGER014 = INTEGER016
  213.             AnsiPos INTEGER006 - INTEGER024, INTEGER007 + INTEGER014 - 1
  214.             STRING006 = Chr(Asc("a") + INTEGER014)
  215.             INTEGER023 = (INTEGER013 - 1) * 2 + 1
  216.             STRING012 = STRING028 + ReadLine(STRING031, INTEGER023 + 1)
  217.             STRING012 = STRING012 + STRING029 + ReadLine(STRING031, INTEGER023 + 2)
  218.             Print ReplaceStr(STRING030, "%SEP%", STRING006), STRING012
  219.             Inc INTEGER014
  220.         Next
  221.         If (INTEGER011 + INTEGER016 > INTEGER012) Then
  222.             INTEGER013 = INTEGER011 + INTEGER016 - INTEGER012
  223.             INTEGER003 = GetY()
  224.             For INTEGER014 = 1 To INTEGER013 - 1
  225.                 AnsiPos INTEGER006 - INTEGER024, INTEGER003 + INTEGER014
  226.                 Print Space(INTEGER008)
  227.             Next
  228.         Endif
  229.     Endif
  230.     Newline
  231.     BOOLEAN004 = 0
  232.     AnsiPos INTEGER006, INTEGER007
  233.     Print STRING021, StripAtx(ReadLine(STRING031, (INTEGER011 - 1) * 2 + 1 + 1))
  234.     :LABEL006
  235.     STRING007 = Inkey()
  236.     If (BOOLEAN001) If (STRING007 <> "") PrintLn STRING007
  237.     If (((Upper(STRING007) == "A") || (STRING007 == "UP")) || (STRING007 == "LEFT")) Then
  238.         INTEGER014 = INTEGER011 % INTEGER016
  239.         If (INTEGER014 == 0) INTEGER014 = INTEGER016
  240.         AnsiPos INTEGER006, INTEGER007 + INTEGER014 - 1
  241.         Print ReadLine(STRING031, (INTEGER011 - 1) * 2 + 1 + 1)
  242.         If (INTEGER011 % INTEGER016 == 1) Then
  243.             INTEGER011 = INTEGER011 + INTEGER016 - 1
  244.             If (INTEGER011 > INTEGER012) INTEGER011 = INTEGER012
  245.         Else
  246.             INTEGER011 = INTEGER011 - 1 % INTEGER016
  247.         Endif
  248.         INTEGER014 = INTEGER011 % INTEGER016
  249.         If (INTEGER014 == 0) INTEGER014 = INTEGER016
  250.         AnsiPos INTEGER006, INTEGER007 + INTEGER014 - 1
  251.         Print STRING021, StripAtx(ReadLine(STRING031, (INTEGER011 - 1) * 2 + 1 + 1))
  252.         Goto LABEL006
  253.     ElseIf (((Upper(STRING007) == "Z") || (STRING007 == "DOWN")) || (STRING007 == "RIGHT")) Then
  254.         INTEGER014 = INTEGER011 % INTEGER016
  255.         If (INTEGER014 == 0) INTEGER014 = INTEGER016
  256.         AnsiPos INTEGER006, INTEGER007 + INTEGER014 - 1
  257.         Print ReadLine(STRING031, (INTEGER011 - 1) * 2 + 1 + 1)
  258.         If (INTEGER011 % INTEGER016 == 0) Then
  259.             INTEGER011 = INTEGER011 - INTEGER016 - 1
  260.         ElseIf (INTEGER011 == INTEGER012) Then
  261.             INTEGER011 = INTEGER019
  262.         Else
  263.             INTEGER011 = INTEGER011 + 1
  264.         Endif
  265.         INTEGER014 = INTEGER011 % INTEGER016
  266.         If (INTEGER014 == 0) INTEGER014 = INTEGER016
  267.         AnsiPos INTEGER006, INTEGER007 + INTEGER014 - 1
  268.         Print STRING021, StripAtx(ReadLine(STRING031, (INTEGER011 - 1) * 2 + 1 + 1))
  269.         Goto LABEL006
  270.     Else
  271.         Select Case (STRING007)
  272.             Case STRING015
  273.                 If (STRING007 <> STRING015) INTEGER011 = STRING007
  274.                 INTEGER013 = INTEGER011
  275.                 Gosub LABEL010
  276.                 INTEGER011 = INTEGER019
  277.                 Goto LABEL003
  278.             Case "HOME"
  279.                 INTEGER014 = INTEGER011 % INTEGER016
  280.                 If (INTEGER014 == 0) INTEGER014 = INTEGER016
  281.                 AnsiPos INTEGER006, INTEGER007 + INTEGER014 - 1
  282.                 Print ReadLine(STRING031, (INTEGER011 - 1) * 2 + 1 + 1)
  283.                 INTEGER011 = INTEGER019
  284.                 INTEGER014 = INTEGER011 % INTEGER016
  285.                 If (INTEGER014 == 0) INTEGER014 = INTEGER016
  286.                 AnsiPos INTEGER006, INTEGER007 + INTEGER014 - 1
  287.                 Print STRING021, StripAtx(ReadLine(STRING031, (INTEGER011 - 1) * 2 + 1 + 1))
  288.                 Goto LABEL006
  289.             Case "END"
  290.                 INTEGER014 = INTEGER011 % INTEGER016
  291.                 If (INTEGER014 == 0) INTEGER014 = INTEGER016
  292.                 AnsiPos INTEGER006, INTEGER007 + INTEGER014 - 1
  293.                 Print ReadLine(STRING031, (INTEGER011 - 1) * 2 + 1 + 1)
  294.                 INTEGER011 = INTEGER018
  295.                 INTEGER014 = INTEGER011 % INTEGER016
  296.                 If (INTEGER014 == 0) INTEGER014 = INTEGER016
  297.                 AnsiPos INTEGER006, INTEGER007 + INTEGER014 - 1
  298.                 Print STRING021, StripAtx(ReadLine(STRING031, (INTEGER011 - 1) * 2 + 1 + 1))
  299.                 Goto LABEL006
  300.             Case "?"
  301.                 DefColor
  302.                 INTEGER009 = GetX()
  303.                 INTEGER010 = GetY()
  304.                 AnsiPos 1, 23
  305.                 SaveScrn
  306.                 StartDisp 2
  307.                 Cls
  308.                 DispFile PPEPath() + "graph\fbhlp", 1 + 4
  309.                 Wait
  310.                 StartDisp 1
  311.                 RestScrn
  312.                 AnsiPos INTEGER009, INTEGER010
  313.                 Goto LABEL006
  314.             Case ">", "CTRL PGDN"
  315.                 If (INTEGER018 + INTEGER016 <= INTEGER012) Then
  316.                     INTEGER011 = INTEGER018 + 1
  317.                     BOOLEAN004 = 1
  318.                     Goto LABEL004
  319.                 Else
  320.                     If (INTEGER018 <> INTEGER012) Then
  321.                         INTEGER011 = INTEGER018 + 1
  322.                         BOOLEAN004 = 1
  323.                         Goto LABEL004
  324.                     Endif
  325.                     MPrint STRING017
  326.                     Goto LABEL006
  327.                 Endif
  328.             Case "<", "CTRL PGUP"
  329.                 If (INTEGER019 - INTEGER016 >= 1) Then
  330.                     INTEGER011 = INTEGER019 - INTEGER016
  331.                     BOOLEAN004 = 1
  332.                     Goto LABEL004
  333.                 Else
  334.                     MPrint STRING017
  335.                     Goto LABEL006
  336.                 Endif
  337.             Case "Q", STRING016
  338.                 DefColor
  339.                 Cls
  340.                 If (BOOLEAN002) Then
  341.                     STRING003 = "Exiting feedback " + String(Time())
  342.                     Gosub LABEL018
  343.                 Endif
  344.                 End
  345.             Case Else
  346.                 If ((STRING007 >= "b") && (STRING007 <= STRING006)) Then
  347.                     INTEGER011 = INTEGER019 + Asc(STRING007) - Asc("b")
  348.                     INTEGER013 = INTEGER011
  349.                     Gosub LABEL010
  350.                     INTEGER011 = INTEGER019
  351.                     Goto LABEL003
  352.                 Endif
  353.                 If (BOOLEAN001) If (STRING007 <> "") PrintLn STRING007
  354.                 If (STRING007 == "■") Then
  355.                     :LABEL007
  356.                     STRING007 = Inkey()
  357.                     If (STRING007 == "") Goto LABEL007
  358.                     If (STRING007 <> "e") Goto LABEL006
  359.                     :LABEL008
  360.                     STRING007 = Inkey()
  361.                     If (STRING007 == "") Goto LABEL008
  362.                     If (STRING007 <> "l") Goto LABEL006
  363.                     GetAltUser 1
  364.                     STRING004 = ReadLine(PCBDat(), 2)
  365.                     Tokenize U_Name()
  366.                     If (TokCount() > 1) Then
  367.                         PrintLn 
  368.                         KbdStuff U_Name() + STRING015
  369.                         Goto LABEL009
  370.                     Endif
  371.                     KbdStuff U_Name() + STRING015 + STRING015
  372.                     :LABEL009
  373.                     KbdStuff U_Pwd + STRING015
  374.                     End
  375.                 Endif
  376.                 Goto LABEL006
  377.             Endif
  378.     End Select
  379.     End
  380.     :LABEL010
  381.     DefColor
  382.     Cls
  383.     INTEGER022 = STRING025 + 2
  384.     INTEGER020 = ReadLine(STRING023, STRING025 + 1 + 1)
  385.     If (BOOLEAN005) Then
  386.         STRING010 = StripAtx(ReadLine(STRING002, 4))
  387.         STRING008 = STRING024
  388.         STRING005 = ReadLine(STRING001, 2)
  389.     Else
  390.         STRING027 = Random(Time())
  391.         STRING027 = Random(INTEGER020 - 1) + 1
  392.         Tokenize ReadLine(STRING023, STRING025 + 1 + STRING027 + 1)
  393.         DispFile PPEPath() + "graph\fbinfo" + String(STRING027), 1 + 4
  394.         If (INTEGER001 == 1) Then
  395.             STRING010 = StripAtx(ReadLine(STRING002, 4))
  396.             AnsiPos GetToken(), GetToken()
  397.             Print GetToken() + Upper(STRING010)
  398.         Else
  399.             STRING010 = StripAtx(ReadLine(STRING002, INTEGER011 - 1 + 4))
  400.             AnsiPos GetToken(), GetToken()
  401.             Print GetToken() + Upper(STRING010)
  402.         Endif
  403.         If (BOOLEAN002) Then
  404.             STRING003 = "Sysop (" + Upper(STRING010) + ") selected for feedback"
  405.             Gosub LABEL018
  406.         Endif
  407.         If (LoggedOn()) Goto LABEL011
  408.         STRING007 = ""
  409.         AnsiPos GetToken(), GetToken()
  410.         InputText GetToken() + "_", STRING007, 3, 70
  411.         If (STRING007 == "") Then
  412.             If (BOOLEAN002) Then
  413.                 STRING003 = "No user name given in feedback"
  414.                 Gosub LABEL018
  415.             Endif
  416.             Return
  417.         Endif
  418.         If (BOOLEAN002) Then
  419.             STRING003 = "Handle (" + Upper(STRING007) + ") entered for feedback"
  420.             Gosub LABEL018
  421.         Endif
  422.         STRING008 = STRING007
  423.         Goto LABEL012
  424.         :LABEL011
  425.         AnsiPos GetToken(), GetToken()
  426.         Print GetToken() + Upper(STRING008)
  427.         If (BOOLEAN002) Then
  428.             STRING003 = "Handle (" + Upper(STRING008) + ") used"
  429.             Gosub LABEL018
  430.         Endif
  431.         :LABEL012
  432.         STRING007 = ""
  433.         AnsiPos GetToken(), GetToken()
  434.         InputText GetToken() + "_", STRING007, 3, 60
  435.         If (STRING007 == "") Then
  436.             If (BOOLEAN002) Then
  437.                 STRING003 = "No feedback subject given"
  438.                 Gosub LABEL018
  439.             Endif
  440.             Return
  441.         Endif
  442.         STRING005 = STRING007
  443.         If (BOOLEAN002) Then
  444.             STRING003 = "Feedback subject (" + Upper(STRING005) + ") entered"
  445.             Gosub LABEL018
  446.         Endif
  447.     Endif
  448.     :LABEL013
  449.     FCreate 1, STRING019, 1, 0
  450.     :LABEL014
  451.     DefColor
  452.     Cls
  453.     STRING026 = Random(Time())
  454.     STRING026 = Random(ReadLine(STRING023, INTEGER022 + INTEGER020 + 1) - 1) + 1
  455.     Tokenize ReadLine(STRING023, INTEGER022 + INTEGER020 + 1 + STRING026)
  456.     DispFile PPEPath() + "graph\fbhdr" + String(STRING026), 1 + 4
  457.     AnsiPos GetToken(), GetToken()
  458.     Print GetToken() + String(INTEGER015)
  459.     AnsiPos GetToken(), GetToken()
  460.     Print GetToken() + String(STRING010)
  461.     AnsiPos GetToken(), GetToken()
  462.     Print GetToken() + String(STRING008)
  463.     AnsiPos GetToken(), GetToken()
  464.     Print GetToken() + String(STRING005)
  465.     INTEGER013 = 0
  466.     STRING009 = ReadLine(STRING001, 9)
  467.     AnsiPos GetToken(), GetToken()
  468.     STRING022 = GetToken()
  469.     If (BOOLEAN003) Then
  470.         STRING014 = ""
  471.         While (1) Do
  472.             FGet 1, STRING014
  473.             If (Ferr(1)) Break
  474.             PrintLn STRING009, STRING014
  475.             Inc INTEGER013
  476.         EndWhile
  477.         BOOLEAN003 = 0
  478.     Endif
  479.     While (1) Do
  480.         If (INTEGER013 >= INTEGER015) Break
  481.         STRING020 = ""
  482.         InputStr STRING022 + STRING009 + "_", STRING020, 15, 75, Mask_Ascii(), 2 + 512
  483.         If (Upper(STRING020) == "/S") Then
  484.             Break
  485.             AnsiPos 1, GetY()
  486.             ClrEol
  487.         Else
  488.             Newline
  489.             FPutLn 1, STRING020
  490.             AnsiPos 1, GetY()
  491.             ClrEol
  492.         Endif
  493.         Inc INTEGER013
  494.     EndWhile
  495.     FClose 1
  496.     :LABEL015
  497.     Newline
  498.     STRING007 = "S"
  499.     If (BOOLEAN005) Then
  500.         InputStr ReadLine(STRING001, 1), STRING007, 1, 1, "SsTtCc", 2
  501.     Else
  502.         InputStr ReadLine(STRING001, 10), STRING007, 1, 1, "AaSsTtCc", 2
  503.     Endif
  504.     Select Case (Upper(STRING007))
  505.         Case "A"
  506.             Goto LABEL017
  507.         Case "T"
  508.             Goto LABEL013
  509.         Case "S"
  510.             Goto LABEL016
  511.         Case "C"
  512.             FOpen 1, STRING019, 2, 0
  513.             BOOLEAN003 = 1
  514.             Goto LABEL014
  515.         Case Else
  516.             Goto LABEL015
  517.     End Select
  518.     :LABEL016
  519.     Message INTEGER002, Upper(STRING010), Upper(STRING008), ReadLine(STRING001, 11) + STRING005, "R", 0, 0, 0, STRING019
  520.     If (BOOLEAN002) Then
  521.         STRING003 = "feedback for sysop (" + Upper(STRING010) + ") entered and saved"
  522.         Gosub LABEL018
  523.     Endif
  524.     Delete STRING019
  525.     If (Exist(PPEPath() + "work\posted." + String(PcbNode()))) Then
  526.         FOpen 1, PPEPath() + "work\posted." + String(PcbNode()), 1, 0
  527.         FPut 1, "YES"
  528.         FClose 1
  529.     Endif
  530.     Return
  531.     :LABEL017
  532.     If (BOOLEAN002) Then
  533.         STRING003 = "Feedback aborted"
  534.         Gosub LABEL018
  535.     Endif
  536.     Delete STRING019
  537.     If (Exist(PPEPath() + "work\posted." + String(PcbNode()))) Then
  538.         FOpen 1, PPEPath() + "work\posted." + String(PcbNode()), 1, 0
  539.         FPut 1, "NO"
  540.         FClose 1
  541.     Endif
  542.     Return
  543.     :LABEL018
  544.     If (LoggedOn()) Goto LABEL019
  545.     FPutLn 3, "    " + STRING003
  546.     Return
  547.     :LABEL019
  548.     Log STRING003, 0
  549.     Return
  550.  
  551. ;------------------------------------------------------------------------------
  552. ;
  553. ; Usage report (before postprocessing)
  554. ;
  555. ; ■ Statements used :
  556. ;
  557. ;    4       End
  558. ;    5       Cls
  559. ;    2       ClrEol
  560. ;    2       Wait
  561. ;    2       Color 
  562. ;    129     Goto 
  563. ;    152     Let 
  564. ;    19      Print 
  565. ;    7       PrintLn 
  566. ;    93      If 
  567. ;    4       DispFile 
  568. ;    1       FCreate 
  569. ;    3       FOpen 
  570. ;    1       FAppend 
  571. ;    3       FClose 
  572. ;    1       FGet 
  573. ;    2       FPut 
  574. ;    2       FPutLn 
  575. ;    3       StartDisp 
  576. ;    1       GetUser
  577. ;    5       DefColor
  578. ;    2       Delete 
  579. ;    1       Log 
  580. ;    3       InputStr 
  581. ;    13      Gosub 
  582. ;    6       Return
  583. ;    3       Inc 
  584. ;    3       Newline
  585. ;    7       Tokenize 
  586. ;    2       InputText 
  587. ;    3       KbdStuff 
  588. ;    26      AnsiPos 
  589. ;    1       Message 
  590. ;    1       SaveScrn
  591. ;    1       RestScrn
  592. ;    2       MPrint 
  593. ;    1       GetAltUser 
  594. ;
  595. ;
  596. ; ■ Functions used :
  597. ;
  598. ;    11      *
  599. ;    12      %
  600. ;    150     +
  601. ;    42      -
  602. ;    43      ==
  603. ;    8       <>
  604. ;    3       <
  605. ;    6       <=
  606. ;    4       >
  607. ;    11      >=
  608. ;    67      !
  609. ;    7       &&
  610. ;    10      ||
  611. ;    1       Len(
  612. ;    20      Upper()
  613. ;    1       Space()
  614. ;    1       Ferr()
  615. ;    5       Chr()
  616. ;    4       Asc()
  617. ;    6       Random()
  618. ;    6       Time()
  619. ;    4       U_Name()
  620. ;    9       StripAtx()
  621. ;    3       Inkey()
  622. ;    20      String()
  623. ;    1       Mask_Ascii()
  624. ;    1       PCBDat()
  625. ;    18      PPEPath()
  626. ;    6       PcbNode()
  627. ;    32      ReadLine()
  628. ;    45      GetToken()
  629. ;    7       Exist()
  630. ;    1       TokenStr()
  631. ;    8       LangExt()
  632. ;    1       AnsiOn()
  633. ;    1       GetX()
  634. ;    4       GetY()
  635. ;    2       DefColor()
  636. ;    4       LoggedOn()
  637. ;    2       TokCount()
  638. ;    2       ReplaceStr()
  639. ;
  640. ;------------------------------------------------------------------------------
  641. ;
  642. ; Analysis flags : RMdH
  643. ;
  644. ; R - Read user ■ 5
  645. ;     User records are read, this may signify that someone wants to get
  646. ;     various informations about a user (for example his password), but
  647. ;     this may also be normal for a program accessing user records (for
  648. ;     example a User Editor)
  649. ;     ■ Search for : GETALTUSER
  650. ;
  651. ; M - Send text to modem only ■ 4
  652. ;     Some informations are sent only to the modem, not to the local
  653. ;     screen, this is a well known way to make stealth backdoors, Check!
  654. ;     ■ Search for : SENDMODEM, MPRINT, MPRINTLN
  655. ;
  656. ; d - Access PCBOARD.DAT ■ 2
  657. ;     Program gets the full pathname to PCBOARD.DAT, this may be usefull
  658. ;     for many PPE so they can find various informations on the system
  659. ;     (system paths, max number of lines in messages, ...) but it may also
  660. ;     be a way to gather vital informations.
  661. ;     ■ Search for : PCBDAT()
  662. ;
  663. ; H - Read Password or Password History ■ 5
  664. ;     Program is reading the user's password or last password history
  665. ;     This may be ok for a password manager, but it is very suspect. Check!
  666. ;     ■ Search for : U_PWDHIST, U_PWD
  667. ;
  668. ;------------------------------------------------------------------------------
  669. ;
  670. ; Postprocessing report
  671. ;
  672. ;    3       For/Next
  673. ;    3       While/EndWhile
  674. ;    45      If/Then or If/Then/Else
  675. ;    2       Select Case
  676. ;
  677. ;------------------------------------------------------------------------------
  678. ;                 AEGiS Corp - Break the routines, code against the machines!
  679. ;------------------------------------------------------------------------------
  680.